package it.giuseppetrisciuoglio.lyrics.parser;

import java.io.UnsupportedEncodingException;

import it.giuseppetrisciuoglio.lyrics.exception.LyricsNotFoundException;

import org.htmlparser.NodeFilter;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.ParserException;

public class AirDaveTestoParser extends AbstractTestoParser {

	//http://www.airdave.it/l/lucio_battisti/canzoni/testo_il_mio_canto_libero.htm
	private static String SITE = "http://www.airdave.it/";
	private static String BLANK_CHAR = "_";
	
	@Override
	public String getTesto(String httpResponse) throws LyricsNotFoundException, ParserException {
		NodeFilter filter =  new AndFilter(
		        new TagNameFilter("div"),
		        new HasAttributeFilter("id", "testo_completo"));
		return super.getTestoParse(httpResponse, filter);
	}

	@Override
	public String getURL(String artista, String titolo) throws IllegalArgumentException, UnsupportedEncodingException {
		super.validArtistaAndTitolo(artista, titolo);
		return SITE.concat(artista.trim().substring(0, 1).toLowerCase()).concat("/")
				.concat(cleanArtista(artista.trim().toLowerCase().replaceAll(" ", BLANK_CHAR))).concat("/canzoni/")
				.concat("testo").concat(BLANK_CHAR).concat(cleanTitolo(titolo.trim().toLowerCase().replaceAll(" ", BLANK_CHAR))
						.concat(".htm"));
	}

	@Override
	protected String cleanTitolo(String titolo) {
		titolo = super.cleanTitolo(titolo);
		return titolo.replace('\'', ' ')
				.replace('.', ' ')
				.replace('(', ' ')
				.replace(')', ' ')
				.replace(',', ' ')
				.replace('"', ' ')
				.replace(':', ' ')
				.replaceAll(" ", "");
	}
	
	@Override
	protected String cleanArtista(String artista) {
		artista = super.cleanArtista(artista);
		return artista.replace('\'', ' ')
				.replace('"', ' ')
				.replace(':', ' ')
				.replaceAll(" ", "");
	}
	


}
